type JSDynamicObject = any;
var t : boolean = true;
var f : boolean = false;
var s : string = "abc";
var n : number = 42;
var b : bigint = 42n;
let b1 : boolean = t || f;
console.log (typeof (t || f));
console.log (t || f);
let b2 : boolean = f || t;
console.log (typeof (f || t));
console.log (f || t);
let b3 : boolean | string = t || s;
console.log (typeof (t || s));
console.log (t || s);
let b4 : boolean | string = f || s;
console.log (typeof (f || s));
console.log (f || s);
let b5 : string | boolean = s || t;
console.log (typeof (s || t));
console.log (s || t);
let b6 : string | boolean = s || f;
console.log (typeof (s || f));
console.log (s || f);
let b7 : boolean | number = t || n;
console.log (typeof (t || n));
console.log (t || n);
let b8 : boolean | number = f || n;
console.log (typeof (f || n));
console.log (f || n);
let b9 : number | boolean = n || t;
console.log (typeof (n || t));
console.log (n || t);
let b10 : number | boolean = n || f;
console.log (typeof (n || f));
console.log (n || f);
let b11 : boolean | bigint = t || b;
console.log (typeof (t || b));
console.log (t || b);
let b12 : boolean | bigint = f || b;
console.log (typeof (f || b));
console.log (f || b);
let b13 : bigint | boolean = b || t;
console.log (typeof (b || t));
console.log (b || t);
let b14 : bigint | boolean = b || f;
console.log (typeof (b || f));
console.log (b || f);
let b15 : boolean | undefined = t || undefined;
console.log (typeof (t || undefined));
console.log (t || undefined);
let b16 : boolean | undefined = f || undefined;
console.log (typeof (f || undefined));
console.log (f || undefined);
let b17 : undefined | boolean = undefined || t;
console.log (typeof (undefined || t));
console.log (undefined || t);
let b18 : undefined | boolean = undefined || f;
console.log (typeof (undefined || f));
console.log (undefined || f);
let s1 : string = s || s;
console.log (typeof (s || s));
console.log (s || s);
let s2 : string | number = s || n;
console.log (typeof (s || n));
console.log (s || n);
let s3 : number | string = n || s;
console.log (typeof (n || s));
console.log (n || s);
let s4 : string | bigint = s || b;
console.log (typeof (s || b));
console.log (s || b);
let s5 : bigint | string = b || s;
console.log (typeof (b || s));
console.log (b || s);
let s6 : string | undefined = s || undefined;
console.log (typeof (s || undefined));
console.log (s || undefined);
let s7 : undefined | string = undefined || s;
console.log (typeof (undefined || s));
console.log (undefined || s);
let n1 : number = n || n;
console.log (typeof (n || n));
console.log (n || n);
let n2 : number | bigint = n || b;
console.log (typeof (n || b));
console.log (n || b);
let n3 : bigint | number = b || n;
console.log (typeof (b || n));
console.log (b || n);
let n4 : number | undefined = n || undefined;
console.log (typeof (n || undefined));
console.log (n || undefined);
let n5 : undefined | number = undefined || n;
console.log (typeof (undefined || n));
console.log (undefined || n);
var c : any = [1, "a"] || 123;
console.log (c);
var d : boolean | undefined = t || undefined;
console.log (d);
var objectx : JSDynamicObject = {};
var objecty : JSDynamicObject = {};
objectx.prop = t;
objecty.prop = 1.1;
var v1 : boolean = objectx.prop;
var v2 : number = objecty.prop;
var v : boolean | number = v1 || v2;
console.log (v);
